package BFS;

import java.util.*;

/**
 * Created with Intellij IDEA.
 * Description;
 * User:TQ02
 * Data:2024-03-13
 * Time:18:10
 * Text：1765. 地图中的最高点
 */
public class Texts7 {


    /*
    * 内容：返回一个矩阵，原来矩阵1为水，0为土；新矩阵则将原来矩阵的1变为0，由此开始，将这一点的上下左右变为中心值＋1
    * 变化之后的值加入队列，因为下次就是将它四周的值遍历＋1
    *
    * */
    int[] dx = {-1,1,0,0};
    int[] dy = {0,0,1,-1};
    int n, m;
    int[][] edit;
    public void dfs(Queue<int[]> t1, int[][] isWater){
        while(!t1.isEmpty()){
            int[] array = t1.poll();
            for(int i = 0; i < 4; i++){
                int x = dx[i] + array[0], y = dy[i] + array[1];
                if(x >= 0 && x < n && y >=0 && y < m && edit[x][y] == -1){
                    edit[x][y] = edit[array[0]][array[1]] + 1;
                    t1.add(new int[]{x,y});
                }
            }
        }
    }


    public int[][] highestPeak(int[][] isWater) {
        Queue<int[]> t1=new LinkedList<>();
        n = isWater.length; m = isWater[0].length;
        edit=new int[n][m];
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                edit[i][j] = -1;
            }
        }
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                if(isWater[i][j] == 1){
                    t1.add(new int[]{i,j});
                    edit[i][j]=0;
                }
            }
        }
        dfs(t1,isWater);
        return edit;
    }
    public static void main(String[] args) {
        int[][] array={{0,1},{0,0}};
        Texts7 t1=new Texts7();
        System.out.println(t1.highestPeak(array));

    }
}